数据表就是数据库里的"Excel 表格"——学会建表和设规则,你的数据才能住得舒服、住得安全。
打开建表界面后,你会看到很多设置项,下面逐一解释:
| 界面字段 | 含义 | 注意事项 |
|---|---|---|
Table Name |
表名 | 最多 64 字符,不区分大小写,不能用 SQL 关键字(如 select、table) |
Charset/Collation |
字符集 / 排序规则 | 一般用默认的 utf8mb4 就行 |
Engine |
存储引擎 | 默认 InnoDB,支持事务和外键 |
Comments |
表的备注说明 | 写清楚这张表是干什么的 |
Column Name |
列名(字段名) | 同一张表不能有重名的列 |
Data Type |
数据类型 | 就是上节课学的 INT、VARCHAR 等 |
列名右边还有一排复选框缩写,它们代表约束:
| 缩写 | 全称 | 作用 |
|---|---|---|
PK | Primary Key | 主键,本行的"身份证" |
NN | Not Null | 不能为空 |
UQ | Unique | 值不能重复 |
AI | Auto Increment | 自增长(每新增一行自动 +1) |
UN | Unsigned | 非负数 |
ZF | Zero Fill | 不够位数的前面补零 |
B | Binary | 按二进制存储 |
G | Generated | 基于公式自动计算的列 |
下面看一个完整的例子——在 teaching 数据库中建一个学生表:
COMMENT 就是"注释",方便别人(或未来的你)看懂每列是什么意思。养成好习惯!
MySQL 一共有 5 种常用约束,可以看成 5 道"安检门":
UNIQUE 有两种写法:列约束(跟在字段后面)和 表约束(写在所有字段之后):
PRIMARY KEY vs UNIQUE 有什么区别?
| 对比项 | PRIMARY KEY | UNIQUE |
|---|---|---|
| 数量 | 一张表只能 1 个 | 可以有多个 |
| 允许 NULL? | ❌ 绝对不行 | ✅ 允许多个 NULL(MySQL 认为 NULL ≠ NULL,不算重复) |
| 能同时用在同一列? | ❌ 没必要。PK 已经自带"不重复+不为空",再加 UQ 等于重复建索引——就像你已经是校长了,再给自己发一张教职工证,身份重叠、浪费资源。 | |
当主表数据被删除或更新时,从表怎么办?有 4 种策略:
🚫 拒绝!有人引用就不让删改主表。
🔄 级联!主表删了,从表对应的也跟着删。
📝 置空!主表删了,从表外键变成 NULL。
≈ RESTRICT,效果相同。
age > 0),也可以写复杂表达式(如 score >= 0 AND score <= 100)。
5 种约束速查表
| 约束 | 一句话解释 | 生活类比 |
|---|---|---|
NOT NULL |
不能为空 | 快递单必填项 |
UNIQUE |
不能重复 | 班级学号不能撞车 |
PRIMARY KEY |
唯一标识 = NOT NULL + UNIQUE | 身份证号 |
FOREIGN KEY |
关联另一张表 | 选课表引用学生表的学号 |
CHECK |
限制取值范围 | 成绩只能 0~100 |